range: Fix gadget state propagation
authorMatthias Clasen <mclasen@redhat.com>
Wed, 9 Mar 2016 19:15:40 +0000 (14:15 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 9 Mar 2016 19:15:40 +0000 (14:15 -0500)
The contents node was not getting state updates at all, and the
trough node was missing some state updates as well, because we
were not calling update_trough_state() in all the places where
it is needed.

gtk/gtkrange.c

index c85c20337a1d30c41e7cd47a8c8d38f9c9537a02..b9fada2dc74c21b9256efa401a79be6aa533b277 100644 (file)
@@ -2302,6 +2302,8 @@ update_trough_state (GtkRange *range)
 
   state &= ~(GTK_STATE_FLAG_PRELIGHT | GTK_STATE_FLAG_ACTIVE);
 
+  gtk_css_gadget_set_state (priv->contents_gadget, state);
+
   if (priv->mouse_location == MOUSE_TROUGH && !(state & GTK_STATE_FLAG_INSENSITIVE))
     state |= GTK_STATE_FLAG_PRELIGHT;
 
@@ -2418,6 +2420,7 @@ range_grab_add (GtkRange      *range,
   priv->grab_location = location;
   gtk_range_queue_allocate_location (range, location);
 
+  update_trough_state (range);
   update_slider_state (range);
   update_steppers_state (range);
 
@@ -3473,6 +3476,7 @@ gtk_range_update_mouse_location (GtkRange *range)
       else
         gtk_widget_set_state_flags (widget, GTK_STATE_FLAG_PRELIGHT, FALSE);
 
+      update_trough_state (range);
       update_slider_state (range);
       update_steppers_state (range);
     }